Model Checking Database Applications
نویسندگان
چکیده
We describe the design of DPF, an explicit-state model checker for database-backed web applications. DPF interposes between the program and the database layer, and precisely tracks the effects of queries made to the database. We experimentally explore several implementation choices for the model checker: stateful vs. stateless search, state storage and backtracking strategies, and dynamic partial-order reduction. In particular, we define independence relations at different granularity levels of the database (at the database, relation, record, attribute, or cell level), and show the effectiveness of dynamic partial-order reduction based on these relations. We apply DPF to look for atomicity violations in web applications. Web applications maintain shared state in databases, and typically there are relatively few database accesses for each request. This implies concurrent interactions are limited to relatively few and well-defined points, enabling our model checker to scale. We explore the performance implications of various design choices and demonstrate the effectiveness of DPF on a set of Java benchmarks. Our model checker was able to find new concurrency bugs in two open-source web applications, including in a standard example distributed with the Spring framework.
منابع مشابه
Applications of Fuzzy Program Graph in Symbolic Checking of Fuzzy Flip-Flops
All practical digital circuits are usually a mixture of combinational and sequential logic. Flip–flops are essential to sequential logic therefore fuzzy flip–flops are considered to be among the most essential topics of fuzzy digital circuit. The concept of fuzzy digital circuit is among the most interesting applications of fuzzy sets and logic due to the fact that if there has to be an ultimat...
متن کاملAbstract Model Checking of Web Applications Using Java PathFinder
Model Checking of Web Applications Using Java PathFinder Vinh Cuong Tran Yoshinori Tanabe Masami Hagiya Due to the interleaving of clients and servers, verifying web applications is a hard task. Bugs may occur only on particular scenarios, but testing all of them manually is almost impossible. To overcome the difficulty, we propose a framework for source code model checking of web applications....
متن کاملModel Checking for Database Theoreticians
Algorithmic verification is one of the most successful applications of automated reasoning in computer science. In algorithmic verification one uses algorithmic techniques to establish the correctness of the system under verification with respect to a given property. Model checking is an algorithmic-verification technique that is based on a small number of key ideas, tying together graph theory...
متن کاملDetecting Termination of Active Database Rules Using Symbolic Model Checking
One potential problem of active database applications is the non-termination of rules. Although algorithms have been proposed to detect non-termination, almost all provide a conservative estimate; that is, the algorithms detect all the potential cases of non-termination. These algorithms then leave it to the database programmer to analyze each case to determine if indeed the rules are non-termi...
متن کاملMonitoring Atomicity in Concurrent Programs
We study the problem of monitoring concurrent program runs for atomicity violations. Unearthing fundamental results behind scheduling algorithms in database control, we build space-efficient monitoring algorithms for checking atomicity that use space polynomial in the number of active threads and entities, and independent of the length of run monitored. Second, by interpreting the monitoring al...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2013